home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Wayzata's Best of Shareware PC/Windows 1
/
Wayzata's Best of Shareware for PC-Windows - Release 1 - Wayzata Technology (1993).iso
/
mac
/
ZIPPED
/
WINDOWS
/
MISCUTIL
/
RSGAGE13.ZIP
/
PROFILE.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-08-23
|
10KB
|
284 lines
// ============================================================================
// profile.c -- code for dealing with the configuration file.
// ============================================================================
#include <windows.h>
#include "resgauge.h"
// ============================================================================
// > > > > > > > > > > > > > > > code begins < < < < < < < < < < < < < < < <
// ============================================================================
// Retrieves the program configuration.
// ----------------------------------------------------------------------------
void
FAR
PASCAL
GetConfig(void)
{
char szApp[32];
char szKey[32];
char szProfile[32];
char szString[32];
char szTmp[32];
WORD wTmp;
// load the application name and the profile name
LoadString(GhInst, IDS_APPLICATION, szApp, sizeof(szApp) - 1);
LoadString(GhInst, IDS_PROFILE, szProfile, sizeof(szProfile) - 1);
// get the monitor mode
LoadString(GhInst, IDS_MONITOR, szKey, sizeof(szKey) - 1);
LoadString(GhInst, GcfgDef.wMonitor, szTmp, sizeof(szTmp) - 1);
GetPrivateProfileString(szApp,
szKey,
szTmp,
szString,
sizeof(szString),
szProfile);
LoadString(GhInst, IDS_GDI, szTmp, sizeof(szTmp) - 1);
if ( lstrcmpi(szString, szTmp) == 0 )
{
GcfgCur.wMonitor = MONITOR_GDI;
}
else
{
LoadString(GhInst, IDS_USER, szTmp, sizeof(szTmp) - 1);
if ( lstrcmpi(szString, szTmp) == 0 )
GcfgCur.wMonitor = MONITOR_USER;
else
GcfgCur.wMonitor = MONITOR_BOTH;
}
// get the alarm setting
LoadString(GhInst, IDS_ALARM_ENABLED, szKey, sizeof(szKey) - 1);
wTmp = GetPrivateProfileInt(szApp,
szKey,
GcfgDef.fAlarmEnabled,
szProfile);
if ( wTmp )
GcfgCur.fAlarmEnabled = TRUE;
else
GcfgCur.fAlarmEnabled = FALSE;
// get the alarm type
LoadString(GhInst, IDS_ALARM_TYPE, szKey, sizeof(szKey) - 1);
LoadString(GhInst, GcfgDef.wAlarmType, szTmp, sizeof(szTmp) - 1);
GetPrivateProfileString(szApp,
szKey,
szTmp,
szString,
sizeof(szString),
szProfile);
LoadString(GhInst, IDS_FLASH, szTmp, sizeof(szTmp) - 1);
if ( lstrcmpi(szString, szTmp) == 0 )
GcfgCur.wAlarmType = ALARM_FLASH;
else
GcfgCur.wAlarmType = ALARM_BEEP;
// get the threshold value
LoadString(GhInst, IDS_THRESHOLD, szKey, sizeof(szKey) - 1);
wTmp = GetPrivateProfileInt(szApp, szKey, GcfgDef.wThreshold, szProfile);
GcfgCur.wThreshold = max(min(wTmp, 99), 1);
// get the "keep on top" setting
LoadString(GhInst, IDS_KEEP_ON_TOP, szKey, sizeof(szKey) - 1);
wTmp = GetPrivateProfileInt(szApp, szKey, 0, szProfile);
if ( wTmp )
GcfgCur.fKeepOnTop = TRUE;
else
GcfgCur.fKeepOnTop = FALSE;
// get the gauge color for GDI
LoadString(GhInst, IDS_COLOR_GDI, szKey, sizeof(szKey) - 1);
wsprintf(szTmp, "%lX", GcfgDef.dwColorGDI);
GetPrivateProfileString(szApp,
szKey,
szTmp,
szString,
sizeof(szString),
szProfile);
if ( DecodeHexString(szString, &(GcfgCur.dwColorGDI)) != 0 )
GcfgCur.dwColorGDI = GcfgDef.dwColorGDI;
// get the gauge color for User
LoadString(GhInst, IDS_COLOR_USER, szKey, sizeof(szKey) - 1);
wsprintf(szTmp, "%lX", GcfgDef.dwColorUser);
GetPrivateProfileString(szApp,
szKey,
szTmp,
szString,
sizeof(szString),
szProfile);
if ( DecodeHexString(szString, &(GcfgCur.dwColorUser)) != 0 )
GcfgCur.dwColorUser = GcfgDef.dwColorUser;
// get the gauge color for both
LoadString(GhInst, IDS_COLOR_BOTH, szKey, sizeof(szKey) - 1);
wsprintf(szTmp, "%lX", GcfgDef.dwColorBoth);
GetPrivateProfileString(szApp,
szKey,
szTmp,
szString,
sizeof(szString),
szProfile);
if ( DecodeHexString(szString, &(GcfgCur.dwColorBoth)) != 0 )
GcfgCur.dwColorBoth = GcfgDef.dwColorBoth;
} // GetConfig
// ----------------------------------------------------------------------------
// Saves the program configuration.
// ----------------------------------------------------------------------------
void
FAR
PASCAL
SaveConfig(void)
{
char szApp[32];
char szKey[32];
char szProfile[32];
char szString[32];
WORD wTmp;
// load the application name and the profile name
LoadString(GhInst, IDS_APPLICATION, szApp, sizeof(szApp) - 1);
LoadString(GhInst, IDS_PROFILE, szProfile, sizeof(szProfile) - 1);
// save the monitor mode
if ( GcfgCur.wMonitor == MONITOR_GDI )
wTmp = IDS_GDI;
else if ( GcfgCur.wMonitor == MONITOR_USER )
wTmp = IDS_USER;
else
wTmp = IDS_BOTH;
LoadString(GhInst, IDS_MONITOR, szKey, sizeof(szKey) - 1);
LoadString(GhInst, wTmp, szString, sizeof(szString) - 1);
WritePrivateProfileString(szApp, szKey, szString, szProfile);
// save the alarm setting
if ( GcfgCur.fAlarmEnabled )
wTmp = IDS_TRUE;
else
wTmp = IDS_FALSE;
LoadString(GhInst, IDS_ALARM_ENABLED, szKey, sizeof(szKey) - 1);
LoadString(GhInst, wTmp, szString, sizeof(szString) - 1);
WritePrivateProfileString(szApp, szKey, szString, szProfile);
// save the alarm type
if ( GcfgCur.wAlarmType == ALARM_FLASH )
wTmp = IDS_FLASH;
else
wTmp = IDS_BEEP;
LoadString(GhInst, IDS_ALARM_TYPE, szKey, sizeof(szKey) - 1);
LoadString(GhInst, wTmp, szString, sizeof(szString) - 1);
WritePrivateProfileString(szApp, szKey, szString, szProfile);
// save the threshold value
wsprintf(szString, "%u", GcfgCur.wThreshold);
LoadString(GhInst, IDS_THRESHOLD, szKey, sizeof(szKey) - 1);
WritePrivateProfileString(szApp, szKey, szString, szProfile);
// save the gauge color for GDI
LoadString(GhInst, IDS_COLOR_GDI, szKey, sizeof(szKey) - 1);
wsprintf(szString, "%lX", GcfgCur.dwColorGDI);
WritePrivateProfileString(szApp, szKey, szString, szProfile);
// save the gauge color for User
LoadString(GhInst, IDS_COLOR_USER, szKey, sizeof(szKey) - 1);
wsprintf(szString, "%lX", GcfgCur.dwColorUser);
WritePrivateProfileString(szApp, szKey, szString, szProfile);
// save the gauge color for both
LoadString(GhInst, IDS_COLOR_BOTH, szKey, sizeof(szKey) - 1);
wsprintf(szString, "%lX", GcfgCur.dwColorBoth);
WritePrivateProfileString(szApp, szKey, szString, szProfile);
} // SaveConfig
// ----------------------------------------------------------------------------
// Saves the "keep on top" setting.
// ----------------------------------------------------------------------------
void
FAR
PASCAL
SaveKeepOnTop(void)
{
char szApp[32];
char szKey[32];
char szProfile[32];
char szString[32];
WORD wTmp;
// load the application name and the profile name
LoadString(GhInst, IDS_APPLICATION, szApp, sizeof(szApp) - 1);
LoadString(GhInst, IDS_PROFILE, szProfile, sizeof(szProfile) - 1);
// save the setting
if ( GcfgCur.fKeepOnTop )
wTmp = IDS_TRUE;
else
wTmp = IDS_FALSE;
LoadString(GhInst, IDS_KEEP_ON_TOP, szKey, sizeof(szKey) - 1);
LoadString(GhInst, wTmp, szString, sizeof(szString) - 1);
WritePrivateProfileString(szApp, szKey, szString, szProfile);
} // SaveKeepOnTop
// ----------------------------------------------------------------------------
// Decodes a hex string into a DWORD in the caller. The hex string can be no
// longer than 8 characters, and an invalid character will abort decoding and
// cause the function to return 1.
// ----------------------------------------------------------------------------
UINT
FAR
PASCAL
DecodeHexString(
LPSTR lpstrValue,
DWORD FAR * dwValue)
{
char chTmp;
int nChars;
DWORD dwTmp;
LPSTR lpstrTmp;
UINT uiReturn;
// assume failure
uiReturn = 1;
// initialize
lpstrTmp = lpstrValue;
nChars = 0;
dwTmp = 0;
// traverse the string
while ( (*lpstrTmp) && (nChars < 8) )
{
chTmp = *lpstrTmp++;
++nChars;
dwTmp <<= 4;
if ( (chTmp >= '0') && (chTmp <= '9') )
dwTmp += chTmp - '0';
else if ( (chTmp >= 'a') && (chTmp <= 'f') )
dwTmp += chTmp - 'a' + 10;
else if ( (chTmp >= 'A') && (chTmp <= 'F') )
dwTmp += chTmp - 'A' + 10;
else
break;
}
if ((*lpstrTmp == 0) && (nChars <= 8) )
{
*dwValue = dwTmp;
uiReturn = 0;
}
return(uiReturn);
} // DecodeHexString
// ================
// end of profile.c
// ================